(for Internet Explorer)
ダウンロード
txt2bintxt.exe は、VBScript で、一部がバイナリになっているテキストファイルを
作成できるようにする変換ツールです。
  f.WriteLine  "123"
  f.WriteLine  Chr(&hFF)+"EF BB BF 0D 0A"
  f.WriteLine  "123"
バイナリになっている行は、行頭に Chr(&hFF) を出力してください。
31 32 33 0D 0A
EF BB BF 0D 0A
31 32 33 0D 0A
こうして出力したファイルを、in.txt として、
txt2bintxt.exe  in.txt  out.txt
を実行すると、out.txt は次のようになります。
out.txt (バイナリ表現)
out.txt (テキスト表現)
123
・ソ
123
EF BB BF 0D 0A
EF BB BF 0D 0A
・ソ
EF BB BF は、UTF-8 の BOM です。
→ txt2bintxt.zip
不要になった入力ファイル(in.txt) は、別途削除してください。
関連
BOM 付きテキストファイル
バイナリ・ファイル・アクセス
Sub  Txt2BinTxt( SrcPath as string, DstPath as string )
(src)
参考
Function  get_ADODBConsts() as ADODBConsts
ADODB モジュールの定数をメンバーに持つオブジェクトを返します。
ADODBConsts が定義する定数
サンプル
Dim  c : Set c = get_ADODBConsts()
t = f.Read( c.adReadAll )
(src)
バイト配列を作成する関数
バイト配列と整数の間で変換する関数
関連
ファイル:
System.vbs
Function  ADODBConsts::ConvertToByteArray( ByteArray as variant,
             Offset as integer,  Size as integer ) as array of Byte
文字列や配列や数値を、バイト配列に変換します。
【引数】
ByteArray
Offset
文字列、または配列、または数値
返り値の先頭となる ByteArray の中の位置。先頭=0
Size
ByteArray の中から返り値にするサイズ(バイト)。最後まで=-1
ファイル:
System.vbs
返り値
に渡せる
サンプル
  Dim binary, stream
  Dim c : Set c = get_ADODBConsts()
  binary = c.ConvertToByteArray( ChrB( &h42 ) + ChrB( &h4D ), 0, Empty )
  stream.Write  binary
  binary = c.ConvertToByteArray( &h4D, 1, Empty )
(src)
→ T_Binary フォルダ
テスト
参考
Function  ADODBConsts::ConvertToStructuredByteArray( FormatAndDataArray as array ) as array of Byte
構造化した配列を、バイト配列に変換します。
【引数】
FormatAndDataArray
バイナリ配列へライトする部分の型とライトする値の集合
返り値
に渡せる
(src)
→ T_Binary フォルダ
テスト
参考
構造化した配列、FormatAndDataArray 引数の説明
Function  ADODBConsts::BytesToShortInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、-32768(&h8000)〜32767(&h7FFF) の整数に変換します。
サンプル
c.BytesToShortInt( &hFE, &hFF ) = &hFFFE
(src)
Function  ADODBConsts::BytesToUShortIntToLongInt( b0, b1, b2, b3 as integer ) as integer
2バイトのバイナリ・データを、0〜65535 の整数に変換します。
サンプル
c.BytesToUShortIntToLongInt( &hFE, &hFF ) = 65534
(src)
Function  ADODBConsts::BytesToLongInt( b0, b1, b2, b3 as integer ) as integer
4バイトのバイナリ・データを、Long 型整数に変換します。
サンプル
c.BytesToLongInt( &h78, &h56, &h34, &h12 ) = &h12345678
(src)
c.BytesToLongInt( AscB( b ), AscB( MidB( b, 2, 1 ) ), _
    AscB( MidB( b, 3, 1 ) ), AscB( RightB( b, 1 ) ) )
Function  ADODBConsts::ShortIntToBytes( Value as integer ) as array of integer
-32768(&h8000)〜32767(&h7FFF) の整数を、2バイトの配列に変換します。
サンプル
c.ShortIntToBytes( &hFEFF ) = Array( &hFF, &hFE )
&h0000〜&h7FFF(Integer型)、&h10000〜 &h7FFFFFFF(Long型) は、正の整数です。
&h8000〜&hFFFF(Integer型)、&h80000000〜(Long型) は、負の整数です。
(src)
Function  ADODBConsts::LongIntToUShortIntToBytes( Value as integer ) as array of integer
0〜65535 の整数を、2バイトの配列に変換します。
サンプル
c.LongIntToUShortIntToBytes( 65534 ) = Array( &hFE, &hFF )
(src)
Function  ADODBConsts::LongIntToBytes( Value as integer ) as array of integer
整数を、4バイトの配列に変換します。
サンプル
c.LongIntToBytes( &h12345678 ) = Array( &h78, &h56, &h34, &h12 )
(src)
ADODB.Stream 関連
→ vbslib.vbs
Sub  ADODB_Stream_loadFromFile( Stream as ADODB.Stream, Path as string )
エラーメッセージを適切にした ADODB.Stream.LoadFromFile 。
テスト
ソース
参考
→ T_fc.vbs
T_IsSameBinaryFile_ReadWriteLock
複数行からなる文字列のうち、それぞれの行を要素とした配列を返します。
Function  ArrayFromLines( lines as string ) as Array of string
For Each line  In ArrayFromLines( "ABC"+ vbCRLF +"DEF" )
Next
【引数】
lines
返り値
複数行からなる文字列
それぞれの行を要素とした配列
上記 ArrayFromLines の返り値は、Array( "ABC", "DEF" )
"ABC"+ vbCRLF +"DEF"
サンプル
関連
改行文字は、CR+LF でも LF でもどちらでも構いません。
a_array = ArrayFromLines( Trim2( root.selectSingleNode( _
    "./Lines/text()" ).nodeValue ) )
サンプル
<Lines>
Line (1)
Line (2)
</Lines>
XML
VBScript
a_array は、Array( "Line (1)", "Line (2)" ) になります。
Lines
nodeValue
selectSingleNode
テスト
→ vbslib.vbs
ソース
→ T_Lines.vbs
→ セクション化されたソースファイル (Module Mixer)
関連
→ 構造化テキストフォーマット
セクション化されたテキストを集めた文字列を返します
セクション化されたテキストを編集します
複数のセクションに分けたテキストファイルを扱います。
セクション化されたテキストを集めてファイルを作成します
Sub  CreateFromTextSections( in_XML_Path as string,  in_XML_Root as IXMLDOMElement,
    in_CreateFilePath as string,  in_MixedTextXPath as string,  in_Empty as Empty )
【引数】
in_XML_Path
in_XML_Root
TextSection タグがある XML ファイルのパス
Empty、または、in_XML_Path の XML の要素オブジェクト
in_CreateFilePath
作成するファイルのパス
in_MixedTextXPath
セクション化されたテキストを集めてファイルを作成します。
返り値
Empty、または、オプション(下記)
in_Empty
セクション化されたテキストを集めたテキスト
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
参考
テキスト、MixedText タグのサンプル
in_XML_Root の中にある
は、TextSection タグの path 属性に指定できます。
サンプル
CreateFile タグに指定されたすべてのファイルを作成する。
CreateFromTextSections  "SettingA.xml", Empty, Empty, Empty, Empty
in_XML_Root に Empty を指定すると、内部で
( in_XML_Path, Empty ) を呼び出します。 その分、
CreateFile タグに指定されたすべてのファイルを作成する。
サンプル
CreateFromTextSections  "SettingA.xml", Empty, "_out.txt", "#C_Type", Empty
テスト
→ T_TextSection.vbs
T_CreateFromTextSections
ソース
→ ToolsLib.vbs
関連
CreateFromTextSections  "SettingA.xml", Empty, "_out.txt", "/MixedText[@id='C_Type']", Empty
処理時間がかかります。
in_Empty に get_ToolsLibConsts().DeleteIfNoSection を指定すると、MixedText タグの中の TextSection タグ
が1つも無いときに、in_CreateFilePath のファイルが削除されます。
Function  ReadTextSections( in_XML_Root as IXMLDOMElement,
    in_MixedTextXPath as string,  in_VariablesForPath as string,
    in_Variables as LazyDictionaryClass,  in_Empty as Empty )
【引数】
in_XML_Root
in_MixedTextXPath
in_MixedSettingXPath の基準となる XML要素(タグ)
下記の MixedText タグがある XML 要素の XPath、基準は in_XML_Root
in_XML_FilePath
アドレスの基準となる XML ファイルのパス
in_VariablesForPath
セクション化されたテキストを集めた文字列を返します。
返り値
Empty を指定してください
in_Empty
セクション化されたテキストを集めたテキスト
Empty または path 属性に評価するときに使う辞書
参考
テスト
→ T_TextSection.vbs
T_ReadTextSections
ソース
→ ToolsLib.vbs
<File  mixed_text="SettingA.xml#mixed_1"/>
サンプル
SettingB.xml
<MixedText  id="mixed_1">
<TextSection  path="File.c#First"/>
<TextSection  path="File.c#Second"/>
</MixedText>
SettingA.xml
VBScript
    Set linker = new LinkedXMLs
    linker.XmlTagNamesHavingIdName = Array( "MixedText" )

    xml_path = "SettingB.xml"
    Set xml_root = LoadXML( xml_path, Empty )

    linker.StartNavigation  xml_path, xml_root
    Set mixed_text_tag = linker.GetLinkTargetNode( xml_root.getAttribute( "mixed_text" ) )
    text = ReadTextSections( mixed_text_tag, ".", linker.TargetXmlPath, Empty, Empty )
    linker.EndNavigation
"SettingB.xml"
"mixed_text"
mixed_text
SettingB.xml の XML 属性から参照する MixedText タグからセクションを集める。
ReadTextSections
関連
テキストのサンプル
in_XML_Root の中にある
と、in_VariablesForPath 引数の変数は、TextSection タグの path
属性に指定できます。
VBScript
    xml_path = "SettingB.xml"
    Set xml_root = LoadXML( xml_path, Empty )

    text = ReadTextSections( xml_root, "/MixedText[@id='mixed_1']", xml_path, Empty, Empty )
ReadTextSections
→ ToolsLib.vbs
ソース
テスト
→ T_TextSection.vbs
T_MakeCrossedOldSections
Sub  MakeCrossedOldSections( in_OutFolderPath as string, _
        in_NewFolderPath as string or PathDictionaryClass,  in_OldFolderPath as string, _
        in_NewTxscPath as string,  in_OldTxscPath as string,  in_Option as Empty )
新しいセクションの構成に合わせるように、古い内容のセクションを集めます。
【引数】
in_OutFolderPath
in_NewFolderPath
出力ファイルを格納するフォルダーのパス
新しいセクションの構成を持つファイルが入ったフォルダーのパス
in_OldFolderPath
古い内容のセクションを持つファイルが入ったフォルダーのパス
in_OldFolderPath の中間ファイルを格納するフォルダーのパス
in_OldTxscPath
in_NewFolderPath の中間ファイルを格納するフォルダーのパス
in_NewTxscPath
Empty を指定してください
in_Option
→ T_CrossedOld フォルダー
in_NewFolderPath 引数に
のオブジェクトを指定できます。
in_NewFolderPath 引数に指定したファイルに対応する出力ファイルが in_OutFolderPath 引数に指定
したフォルダーに格納されます。
関連
中間ファイルは、
が出力するセクション インデックス ファイルです。
サンプル
Out
New
Old
A.txt
B.txt
/* Title: Section_A_1 */
This is old Section-A-1.

/* Title: Section_B_1 */
This is old Section-B-1.

/* Title: Section_B_2 */
This is old Section-B-2.
A.txt
/* Title: Section_A_1 */
New A-1.


New A-2.
B.txt
/* Title: Section_B_1 */
New B-1.

/* Title: Section_B_2 */
New B-2.
/* Title: Section_B_1 */
This is old Section-B-1.

Y.txt
X.txt
/* Title: Section_A_1 */
This is old Section-A-1.

/* Title: Section_B_2 */
This is old Section-B-2.
/* Title: Section_A_2 */
This is old Section-A-2.
/* Title: Section_A_2 */
/* Title: Section_A_2 */
This is old Section-A-2.
New フォルダーにある A.txt と同じ名前のファイルを、Out フォルダーに作成します。 その内容は、
New フォルダーにある A.txt のセクションの構成(順序)、すなわち、Section_A_1、Section_A_2 の
順になります。 セクションの名前は、
が入力する形式で記述します。
Natural Docs
形式のみ対応しています。 それぞれセクションの内容は、Old フォルダーに
現在は、
ある、すべてのファイルの中から検索して見つかったセクションをコピーした内容になります。
→ ModuleAssort
内部で
を呼び出しています。
MakeTextSectionIndexFile  "*.c", "NaturalDocs", "C_Type", Empty, Empty
Sub  MakeTextSectionIndexFile( Path as string or PathDictionaryClass,
    TagTypeName as string,  BeforeRootFullPath as string,  AfterRootFullPath as string )
タグが付いたファイルから、セクション インデックス ファイルを更新します。
【引数】
Path
TagTypeName
セクション化されたテキスト ファイルのパス、または、
タグのタイプ、"NaturalDocs" を指定してください
テスト
サンプル
ソース
T_MakeTxScFile
.txsc ファイルのタイムスタンプの方が新しいときは、更新をせず、高速に処理します。
→ T_TextSection.vbs
→ ToolsLib.vbs
→ NaturalDocs 関連の構文解析
*.txsc ファイルを作成する
サンプル
_txsc\(ファイル名.拡張子).txsc の例
<File  path="..\Sample.c"  type="C_Type">
<TextSection  keyword="Function" name="StartA" start_line="100" end_line="129"
    next_to_comment_line="110"/>
<TextSection  keyword="Function" name="StartB" start_line="130" end_line="159"
    next_to_comment_line="140"/>
</File>
BeforeRootFullPath
AfterRootFullPath
セクション化されたテキストのルート・フォルダーのパス
セクション インデックス ファイル(.txsc) のルート・フォルダーのパス
BeforeRootFullPath 引数、AfterRootFullPath 引数に Empty を指定すると、カレント フォルダーを指定した
ときと同じ処理をします。 BeforeRootFullPath 引数、AfterRootFullPath 引数の詳細は、
SectionTypeName
出力ファイルの中の type 属性に入れる文字列
BeforeRootFullPath 引数と AfterRootFullPath 引数に、テキスト ファイルとインデックス ファイルのある場所
の関係を指定します。
参考
→ Natural Docs
TagTypeName = "NaturalDocs" の場合の Sample.c の例
/***********************************************************************
* Function: StartA
************************************************************************/
void  StartA()
{
}

/***********************************************************************
* Function: StartB
************************************************************************/
void  StartB()
{
}
コールツリー
MakeNaturalComments_C_Language
config->AdditionalKeywords
g_NaturalDocsKeywords
(src)
MakeTextSectionIndexFile
End of File
MakeTextSectionIndexFile
(.vbs)
(.c)
Sub  ConnectInTextSectionIndexFile( in_IndexFilePath as string,
    in_KeywordAndName as array of array of string,  in_Empty as Empty )
セクション インデックス ファイルの中の指定したセクションを前のセクションとつなげる。
【引数】
in_IndexFilePath
in_KeywordAndName
セクション インデックス ファイルのパス
前のセクションとつなげるセクションのキーワードと名前の配列
in_Empty
Empty を指定してください
サンプル
_txsc\(ファイル名.拡張子).txsc の例
<File  path="..\Sample.c"  type="C_Type">
<TextSection  keyword="Function" name="StartA" start_line="100" end_line="129"
    next_to_comment_line="110"/>
<TextSection  keyword="Function" name="StartB" start_line="130" end_line="159"
    next_to_comment_line="140"/>
</File>
ConnectInTextSectionIndexFile  "Sample.c",  Array( Array( "Function", "StartB" ) )
上記 TextSection タグをつなげるスクリプト:
つなげた後の.txsc ファイルの例:
<File  path="..\Sample.c"  type="C_Type">
<TextSection  keyword="Function" name="StartA" start_line="100" end_line="159"
    next_to_comment_line="110"/>
</File>
    Set file = OpenForWriteTextSection( "file.txt", Empty, Empty )
    file.Cut  "Section1"
    file = Empty
Function  OpenForWriteTextSection( SourcePath as string, DestinationPath as string,
    Option_ as Empty ) as WriteTextSectionClass
セクション化されたテキストの編集を開始します。
【引数】
SourcePath
DestinationPath
編集前のセクション化されたテキスト・ファイルのパス
編集した結果を出力するファイルのパス、または、Empty
Option_
Empty を指定してください
関連
テスト
サンプル
ソース
→ 構造化テキストフォーマット (Module Mixer)
→ ToolsLib.vbs
→ T_TextSection.vbs
返り値
返り値のオブジェクトの参照カウンターが 0 になったら、ファイルに出力されます。
セクション化されたテキスト
セクションを削除します。
file.txt ファイルの中の、"Section1" を含むセクションを削除します。
→ UsesSection (Mxp_Symbol)
残すセクションを選択します。
Sub  WriteTextSectionClass::Cut( Key as string )
セクションを削除します。
【引数】
Key
セクションの中に含まれる文字列
ソース
→ ToolsLib.vbs